package dataAccessObjects;


import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Query;

import entidades.Consultorio;

public class ConsultorioDAO {
	EntityManager em;

	public void CreateConsultorio(EntityManagerFactory emf, Consultorio consultorio){
		try{
			em = emf.createEntityManager();
			em.getTransaction().begin();
			em.persist(consultorio);
			em.flush();
			em.getTransaction().commit();
		}catch(Exception e){
			System.out.println(e.getMessage());
		}finally{
			em.close();
		}
	}
	public Consultorio ReadConsultorio(EntityManagerFactory emf, int id){
		em = emf.createEntityManager();
		Consultorio consultorio = new Consultorio();
		em.getTransaction().begin();

		try{
		Query query = em.createQuery("SELECT consultorio FROM Consultorio consultorio WHERE consultorio.mNumero = "+id);
		consultorio = (Consultorio)query.getSingleResult();
		em.getTransaction().commit();
		}catch(Exception e){
		System.out.println(e.getMessage());
		}finally{
		em.close();
		}
		return consultorio;
	}
	public void UpdateConsultorio(EntityManagerFactory emf, int id, Consultorio consultorio){
		try{
			em = emf.createEntityManager();
			em.getTransaction().begin();
			Consultorio consultorioNuevo = em.find(Consultorio.class, id);
			consultorioNuevo.setmNumero(id);
			consultorioNuevo.setmEspecializacion(consultorio.getmEspecializacion());
			consultorioNuevo.setmEstado(consultorio.ismEstado());
			em.merge(consultorioNuevo);
			em.getTransaction().commit();
		}catch(Exception e){
			System.out.println(e.getMessage());
		}finally{
			em.close();
		}

	}
	public Consultorio DeleteConsultorio(EntityManagerFactory emf, int id){
		Consultorio consultorioABorrar = new Consultorio();
		Consultorio consultorio = ReadConsultorio(emf, id);
		try{
			em = emf.createEntityManager();
		    em.getTransaction().begin();
		    consultorioABorrar = em.find(Consultorio.class, id);
		    em.remove(consultorioABorrar);
		    em.getTransaction().commit();
		  } finally {
		    em.close();
		  }
		return consultorio;
	}

	public ArrayList<Consultorio> getAll(EntityManagerFactory emf){
		em = emf.createEntityManager();
		ArrayList<Consultorio> listaConsultorios= new ArrayList<Consultorio>();
		em.getTransaction().begin();

		try{
		Query query = em.createQuery("SELECT consultorio FROM Consultorio consultorio");
		List lst = query.getResultList();
		Iterator it = lst.iterator();
			while (it.hasNext()){
					Consultorio consultorio = (Consultorio) it.next();
					listaConsultorios.add(consultorio);
				}
		em.getTransaction().commit();
		}catch(Exception e){
		System.out.println(e.getMessage());
		}finally{
		em.close();
		}
		return listaConsultorios;
	}
}
	